
# 面向对象-多态
"""
说明 ：
    1. 必须有继承有关系
    2. 子类的方法要复写(重写)父类的方法
        1) 方法名相同
        2） 子类的参数大于等于父类的参数

多态的使用场景 ：
1. 在子类的继承中已经无法满足子类的需求 ，
2. 主要在于需求的多变，

# 开闭原则
1. 对调用处进行关闭 ： 关闭修改的需求
2. 对实现着来说进行开放 ： 可以进行需求变更，从而保证代码的扩展性
"""


class Test():

    def __init__(self):
        self.mod_data = []

    #设置模块
    def set_module(self,mod_name):
        self.mod_data.append(mod_name)

    # 查看模块
    def get_module(self):
        return self.mod_data

    # 实现搜索
    def search(self):
        print("需要搜索具体的内容")


class Bugs(Test):

    def search(self):
        return [{'bug_id':1,'bug_title':'学生列表页使用学生名称进行搜索 结果不正确','bug_project':'tpshop','version':1.0}]


class Cases(Test):
    def search(self):
        return [{'case_id':1,'case_title':'学生列表页使用学','bug_project':'tpshop','version':1.0}]


# 新增了一个需求 ：开发一个测试报告
class Report(Test):
    def search(self):
        return [{'report_id': 1, 'report_title': '学生列表页使用学', 'bug_project': 'tpshop', 'version': 1.0}]


# 实现一个接口函数
def search_data(test):
    result = test.search()
    return result

# 查询测试Bug的数据
print(search_data(Bugs()))

# 查询测试用例的数据
print(search_data(Cases()))

# 查询测试报告的数据
print(search_data(Report()))